package com.zhangfenghua.hello;

import java.util.Random;
import java.util.Scanner;

/**
 * 题目：双色球
 * 规则：一共七个球，六个红球，一个蓝球，红球范围1-33且不能重复，蓝球是1-16
 * 思路：1.创建一个方法，由自己键盘输入六个红球和一个蓝球，然后返回一个数组
 * 2.随机出六个红球和一个蓝球的数字并返回一个数组，但是要符合规则
 * 3.把输入的数字和中奖的数字进行比对，看中了几个红球几个蓝球
 * */
public class Lottery {
    public static void main(String[] args) {
        contrast(userInputNumber(),createLuckNumber());
    }

    //显示数组中所有数据的一个方法
    public static void displayArray(int arr[]){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i==arr.length-1? arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }

    //设置一个方法对比两组数据
    public static void contrast(int[]a,int[]b){
        //设置一个中红球的数量，蓝球的数量
        int redball=0;
        int buleball=0;
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j < b.length-1; j++) {
                if (a[i]==b[j]){
                    redball++;
                    break;
                }
            }
            buleball=(a[6]==b[6])?1:0;
        }
        System.out.print("这是我选择的彩票");
        displayArray(a);
        System.out.print("最终彩票结果");
        displayArray(b);
        System.out.println("猜中红球数量为："+redball);
        System.out.println("猜中蓝球数量为："+buleball);
    }

    //创建一个方法，由自己键盘输入六个红球和一个蓝球，然后返回一个数组
    public static int[] userInputNumber(){
        int[] arr=new int[7];
        Scanner scanner = new Scanner(System.in);
        //先输入六个红球
        for (int i = 0; i < arr.length-1; i++) {
            System.out.println("请输入第"+(i+1)+"个红球的数字(范围是:1-33)：");
            arr[i]=scanner.nextInt();//获取键盘输入的六个红球数
        }
        System.out.println("请输入蓝球的数字(范围是:1-16)：");
        arr[6]=scanner.nextInt();
        return arr;
    }
    //随机出六个红球和一个蓝球的数字并返回一个数组，但是要符合规则
    //规则：一共七个球，六个红球，一个蓝球，红球范围1-33且不能重复，蓝球是1-16
    public static int[] createLuckNumber(){
        //设置一个动态数组用来存放彩票中的数字
        int luckNumber[]=new int[7];
        //随机数
        Random random = new Random();
        //遍历数组
        for (int i = 0; i < luckNumber.length-1; i++) {
            //判断红球中的数字:不能相同,设置一个死循环：当前数字不与前面的数字重复才可存入数组中
            while (true){
                //先随机出红球的数字
                int data=random.nextInt(33)+1;
                //设置一个标志位
                boolean flag=true;
                for (int j = 0; j<i; j++) {
                    if (luckNumber[j]==data){
                        flag=false;
                        break;
                    }
                }
                if (flag){
                    luckNumber[i]=data;
                    break;
                }
            }
        }
        //蓝球数字
        luckNumber[6]=random.nextInt(16)+1;
        return luckNumber;
    }
}
